/**
 * 初始化全局异常处理（依赖外部传入的logger）
 * @param {winston.Logger} logger 日志实例
 */
function initGlobalErrorHandler(logger) {
    try {
        // 先移除旧的监听器，避免重复绑定
        process.removeAllListeners('uncaughtException');
        process.removeAllListeners('unhandledRejection');
    } catch (err) {
        console.warn('移除旧异常监听器失败:', err.message);
    }

    // 绑定新的异常监听器
    process.on('uncaughtException', (err) => {
        try {
            logger.error(`UncaughtException: ${err.stack || err}`);
        } catch (logErr) {
            console.error('异常日志记录失败:', logErr.message);
            console.error('原始异常:', err);
        }
    });

    process.on('unhandledRejection', (reason) => {
        try {
            logger.error(`UnhandledRejection: ${reason.stack || reason}`);
        } catch (logErr) {
            console.error('异常日志记录失败:', logErr.message);
            console.error('原始错误原因:', reason);
        }
    });
}

module.exports = { initGlobalErrorHandler };